package com.yld.ch07;


/**
 * 
 * 最能体现多线程问题的练习题
 * 
 * 	模拟的是4个窗口[线程]卖100张票[共享资源]
 * @author apples
 *
 */
public class Client {
	
	
	
	public static void main(String[] args) {
		
		
		
		//模拟三个窗口买票  多线程  ? 100
		
		
		//1 先搞成1个火车站
		
		Station  shenzhen = new Station();
		
		
		
		//2 开启3个窗口卖票   每1个窗口都是1个线程
		
		
		
		new Thread(shenzhen).start();
		new Thread(shenzhen).start();
		new Thread(shenzhen).start();
		new Thread(shenzhen).start();
		
		
		
		
		
		
	}

}



/**
 * 买票的火车站
 * @author apples
 *
 */
class Station implements Runnable{
	
	/**
	 * 火车站有100张票  100 99  1  重票 同1张票卖多次?  锁
	 */
	private int ticket =100;
	
	
	@Override
	public void run() {
		
		
		synchronized (Station.class) {
			for (int index = 1; index <= 100; index++) {

				if (ticket >= 1) {
					//最少有1张票才能卖?
					//3个窗口  100张票 ?  请问 ? 每个窗口要卖多少次才能卖完?
					System.out.println("卖出了第" + ticket + "号票...");
					ticket = ticket - 1;
				} else {

					System.out.println("票卖完了....");

					break;
				}

			}
		}
		
		
	}
	
	
}